#!/bin/bash
###
 # @Author: Logan.Li
 # @Gitee: https://gitee.com/attacker
 # @email: admin@attacker.club
 # @Date: 2025-01-20 22:41:34
 # @LastEditTime: 2025-02-11 23:35:34
 # @Description: 
### 
#!/bin/bash

# 确保以 root 用户运行
if [[ $(id -u) -ne 0 ]]; then
    echo "请以 root 用户运行此脚本！"
    exit 1
fi

# 设置磁盘和挂载目录
DISK="/dev/sdb"
MOUNT_DIR="/data"

# 检查磁盘是否存在
if [ ! -e "$DISK" ]; then
    echo "磁盘 $DISK 不存在，请检查路径！"
    exit 1
fi

# 确保磁盘未被使用
if mount | grep -q "$DISK"; then
    echo "磁盘 $DISK 已挂载，无法继续操作！"
    exit 1
fi

# 创建分区（整个磁盘）
echo "为磁盘 $DISK 创建分区..."
parted -s $DISK mklabel gpt mkpart primary ext4 0% 100% || { echo "分区创建失败！"; exit 1; }

# 更新分区表并获取分区设备
if [[ $DISK == *"nvme"* ]]; then
    PARTITION="${DISK}p1"  # NVMe 磁盘分区名称
else
    PARTITION="${DISK}1"   # SATA 磁盘分区名称
fi

partprobe $DISK
sleep 5  # 等待系统识别新分区

# 检查分区是否存在
if [ ! -e "$PARTITION" ]; then
    echo "分区 $PARTITION 不存在，请检查磁盘和分区名称！"
    exit 1
fi

# 创建文件系统
echo "为分区 $PARTITION 创建文件系统..."
mkfs.ext4 $PARTITION || { echo "文件系统创建失败！"; exit 1; }

# 创建挂载目录
echo "创建挂载目录 $MOUNT_DIR..."
mkdir -p $MOUNT_DIR

# 挂载分区到目录
echo "挂载分区 $PARTITION 到 $MOUNT_DIR..."
mount $PARTITION $MOUNT_DIR || { echo "挂载失败！"; exit 1; }

# 获取 UUID 并更新 /etc/fstab
UUID=$(blkid -s UUID -o value $PARTITION)
echo "更新 /etc/fstab 文件..."
echo "UUID=$UUID $MOUNT_DIR ext4 defaults 0 0" >> /etc/fstab

# 检查挂载状态
echo "挂载状态检查："
df -h | grep "$MOUNT_DIR"

echo "磁盘 $DISK 已成功格式化并挂载到 $MOUNT_DIR！"